![]() |
![]() |
![]() |
Figure 4 is the schematic of our first test circuit. The PIC's output lines are first buffered by a 4050 hex buffer chip, and are then connected to an NPN transistor. The transistor used, TIP120, is actually a NPN Darlington (it is shown as a standard NPN). The TIP120's act like switches, activating one stepper motor coil at a time.
![Figure 3](https://www.imagesco.com/articles/picstepper/fig04.gif)
Due to a inductive surge created when a coil is toggled, a standard 1N4001 diode is usually placed across each transistor as shown in the figure, providing a safe way of dispersing the reverse current without damaging the transistor. Sometimes called a snubbing diode. The TIP120 transistors do not need an external snubbing diode because they have a built in diode. So the diodes shown in the drawing are the internal diodes in the TIP120 transistors.
The simplest way to operate a stepper motor with a PIC is with the full step pattern shown in Table 1. Each part of the sequence turns on only one transistor at a time, one after the other. After the sequence is completed, it repeats infinitely until power is removed.
Q1 | Q2 | Q3 | Q4 |
+ | - | - | - |
- | + | - | - |
- | - | + | - |
- | - | - | + |
I purposely made this first program as small as possible, simply to demonstrate how easy it is to control a stepper motor. Also note the use of high and low commands to control the output lines, rather than peek and poke routines. For our purposes, high and low are sufficient.
Listing 1
' First stepper motor controller program
' Rotates motor at set speed forever
Symbol delay = B0
delay = 25
loop:
high 0
pause delay
low 0
high 1
pause delay
low 1
high 2
pause delay
low 2
high 3
pause delay
low 3
goto loop
' use b0 as the delay variable
' set the delay to 25 ms
' turn on Q1
' wait 25 ms
' turn off Q1
' turn on Q2
' wait 25 ms
' turn off Q2
' turn on Q3
' wait 25 ms
' turn off Q3
' turn on Q4
' wait 25 ms
' turn off Q4
' forever
Listing 1